package Exercise_14;

import java.util.Arrays;
import java.util.Random;

/**
 * @author zihao
 * @date 2025/3/18 16:24
 * @VERSION
 * @description
 **/
public class BookTest {
    public static void main(String[] args) {
        // 创建一个 Random 对象，用于生成随机数
        Random random = new Random();

        // 创建一个 Book 对象
        Book book = new Book();

        // 创建一个长度为5的 Book 数组
        Book[] bookList = new Book[5];

        // 使用循环为数组中的每个元素赋值
        for (int i = 0; i < bookList.length; i++) {
            // 为 Book 对象的 id 设置随机值
            book.setId(random.nextInt() * 9 + 1);
            // 为 Book 对象的 title 设置值，每次循环添加不同的后缀
            book.setTitle("泰坦陨落" + (i + 1));
            // 为 Book 对象的 author 设置值，每次循环添加不同的后缀
            book.setAuthor("number：" + (i + 1));
            // 为 Book 对象的 price 设置随机值
            book.setPrice(random.nextInt(1000));
            // 为 Book 对象的 sales 设置随机值
            book.setSales(random.nextInt(5000));
            // 为 Book 对象的 stock 设置随机值
            book.setStock(random.nextInt(200));
            // 为 Book 对象的 imgPath 设置值，每次循环添加不同的后缀
            book.setImgPath(" " + (i + 1));

            // 使用当前 Book 对象的属性值创建一个新的 Book 对象，并赋值给数组中的当前元素
            bookList[i] = new Book(book.getId(), book.getTitle(),
                    book.getAuthor(), book.getPrice(),
                    book.getSales(), book.getStock(), book.getImgPath() + "\n");
        }

        // 打印原始数组内容
        System.out.println(Arrays.deepToString(bookList));

        // 使用冒泡排序算法对数组按照销量从大到小进行排序
        for (int i = 0; i < bookList.length - 1; i++) {
            for (int j = 0; j < bookList.length - 1 - i; j++) {
                // 比较相邻两个元素的销量，如果前者小于后者则交换位置
                if (bookList[j].getSales() > bookList[j + 1].getSales()) {
                    // 交换两个元素的位置
                    Book temp = bookList[j];
                    bookList[j] = bookList[j + 1];
                    bookList[j + 1] = temp;
                }
            }
        }

        // 打印排序后的数组内容
        System.out.println(Arrays.deepToString(bookList));
    }
}